package com.yifan.concurrency.ch1;

import net.jcip.annotations.NotThreadSafe;

/**
 * @NotThreadSafe 是一个非标准的标注，用于说明类和类成员的并发属性
 * 其他标注还包括 @ThreadSafe @Immutable 线程安全标注在许多方面都是有用的
 * @ThreadSafe 标注某个类 开发人员就知晓可放心在多线程环境下使用这个类
 *
 * UnsafeSequence 类中说明的是一种常见的并发安全问题 称为竞态条件 (Race Condition)
 * 多线程环境下 getValue 是否返回唯一的值 取决决于运行时对线程中操作的交替执行方式
 *
 * 由于多个线程要共享相同的内存地址空间，并且是并发运行，因此它们可能会访问或修改其他线程正在使用的变量
 *
 */
@NotThreadSafe
public class UnSafeSequence {

    private int value;

    /**
     * 返回一个唯一的数值
     * @return
     */
    public int getNext() {
        return value ++;
    }
}
